home *** CD-ROM | disk | FTP | other *** search
- #include <exec/types.h>
- #include <exec/memory.h>
- #include <exec/libraries.h>
- #include <intuition/gadgetclass.h>
- #include <string.h>
-
- #include <proto/exec.h>
- #include <proto/intuition.h>
- #include <proto/gadtools.h>
-
- #include "/include/server.h"
-
-
- struct Gadget *glist, *gad, *blank_gdg, *random_gdg, *list_gdg;
-
- extern UWORD wwidth, wheight;
- extern struct List ClientsList, *ModeList;
- extern struct ModeNode *DisplayNode;
- extern UWORD delaySecs;
- extern UBYTE briLevel;
- extern BOOL CommodityActive, RandomClient;
- extern UWORD DefaultClient;
-
- extern void FreeClientsList( void );
- extern struct List *CreateModeList( void );
- extern void DeleteModeList( void );
- extern void GetDisplayNodeFromID( void );
-
- extern char *msg_timeout, *msg_random, *key_random,
- *msg_hide, *key_hide, *msg_quit, *key_quit, *msg_blank, *key_blank,
- *msg_killsel, *key_killsel, *msg_addcli, *key_addcli, *msg_brilevel;
-
-
- /****************
- * *
- * GADGETS STUFF *
- * *
- ****************/
-
- struct VisualInfo *vi;
- UWORD fonth;
- struct NewGadget newgdg = { 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0 };
- struct Screen *WBS;
- struct Library *GadToolsBase;
- struct IntuitionBase *IntuitionBase;
- UWORD wleft = (UWORD)~0, wtop = (UWORD)~0;
- struct DrawInfo *dri;
-
- struct IntuiText it = { 0, 0, 0, 0, 0, NULL, NULL, NULL };
- UWORD maxstrlen;
-
- UWORD CheckMax( STRPTR text, UWORD add_gdw, UWORD prev )
- {
- register UWORD ilength;
-
- it.IText = text;
- if ( ( ilength = IntuiTextLength( &it ) + add_gdw ) > prev )
- return( ilength );
- else
- return( prev );
- }
-
-
- UWORD SetUpGadgets( void )
- {
- if ( CreateModeList() )
- {
- GetDisplayNodeFromID();
-
- if ( WBS = LockPubScreen( NULL ) )
- {
- fonth = WBS->Font->ta_YSize;
- if ( fonth < 12 )
- fonth = 12;
- it.ITextFont = WBS->Font;
- newgdg.ng_TextAttr = WBS->Font;
- newgdg.ng_Height = fonth + 4;
-
- if ( vi = GetVisualInfo( WBS, TAG_END ) )
- {
- newgdg.ng_VisualInfo = vi;
- newgdg.ng_TopEdge = WBS->BarHeight + 3;
-
- maxstrlen = 0;
- maxstrlen = CheckMax( msg_timeout, 50, maxstrlen );
- maxstrlen = CheckMax( msg_brilevel, 50, maxstrlen );
- maxstrlen = CheckMax( msg_random, 26, maxstrlen );
- maxstrlen = CheckMax( msg_hide, 0, maxstrlen );
- maxstrlen = CheckMax( msg_quit, 0, maxstrlen );
- maxstrlen = CheckMax( msg_blank, 0, maxstrlen );
- maxstrlen = CheckMax( msg_killsel, 0, maxstrlen );
- maxstrlen = CheckMax( msg_addcli, 0, maxstrlen );
- newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen - 30;
-
- gad = CreateContext (&glist);
-
- newgdg.ng_Flags = PLACETEXT_LEFT;
- newgdg.ng_Width = 50;
- newgdg.ng_GadgetText = msg_timeout;
- newgdg.ng_GadgetID = TIMEOUT_GDG;
- gad = CreateGadget( INTEGER_KIND, gad, &newgdg,
- GTIN_Number, delaySecs,
- GTIN_MaxChars, 5,
- TAG_END );
-
- newgdg.ng_TopEdge += gad->Height + 7;
- newgdg.ng_GadgetText = msg_brilevel;
- newgdg.ng_GadgetID = BRILEVEL_GDG;
- gad = CreateGadget( INTEGER_KIND, gad, &newgdg,
- GTIN_Number, briLevel,
- GTIN_MaxChars, 3,
- TAG_END );
-
- newgdg.ng_Height = fonth - 1;
- newgdg.ng_Width = 26;
- newgdg.ng_GadgetID = RANDOM_GDG;
- newgdg.ng_TopEdge += gad->Height + 7;
- newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen - 6;
- newgdg.ng_GadgetText = msg_random;
- random_gdg = gad = CreateGadget( CHECKBOX_KIND, gad, &newgdg,
- GTCB_Checked, RandomClient,
- GTCB_Scaled, TRUE,
- GT_Underscore, '_', TAG_END );
-
- newgdg.ng_Height = fonth + 2;
- newgdg.ng_GadgetID = HIDE_GDG;
- newgdg.ng_TopEdge += fonth + 2;
- newgdg.ng_LeftEdge = WBS->WBorLeft + 4;
- newgdg.ng_Flags = 0;
- newgdg.ng_Width = maxstrlen + 16;
- newgdg.ng_GadgetText = msg_hide;
- gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
- GT_Underscore, '_', TAG_END );
-
- newgdg.ng_GadgetID = QUIT_GDG;
- newgdg.ng_TopEdge += gad->Height + 1;
- newgdg.ng_GadgetText = msg_quit;
- gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
- GT_Underscore, '_', TAG_END );
-
- newgdg.ng_GadgetID = BLANK_GDG;
- newgdg.ng_TopEdge += gad->Height + 1;
- newgdg.ng_GadgetText = msg_blank;
- blank_gdg = gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
- GT_Underscore, '_', TAG_END );
-
- newgdg.ng_GadgetID = KILL_GDG;
- newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen + 22;
- newgdg.ng_GadgetText = msg_killsel;
- gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
- GT_Underscore, '_', TAG_END );
-
- newgdg.ng_GadgetID = ADDCLIENTS_GDG;
- newgdg.ng_TopEdge -= blank_gdg->Height + 1;
- newgdg.ng_GadgetText = msg_addcli;
- gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
- GT_Underscore, '_', TAG_END );
-
- newgdg.ng_GadgetID = LIST_GDG;
- newgdg.ng_TopEdge = WBS->BarHeight + 3;
- newgdg.ng_GadgetText = NULL;
- newgdg.ng_Height = gad->TopEdge - newgdg.ng_TopEdge - 2;
- newgdg.ng_Flags = PLACETEXT_ABOVE;
- list_gdg = gad = CreateGadget( LISTVIEW_KIND, gad, &newgdg,
- GTLV_Labels, &ClientsList,
- GTLV_Top, DefaultClient,
- GTLV_Selected, DefaultClient,
- GTLV_ShowSelected, NULL,
- TAG_END );
-
- newgdg.ng_GadgetID = MODEID_GDG;
- newgdg.ng_TopEdge = blank_gdg->TopEdge + blank_gdg->Height + 1;
- newgdg.ng_LeftEdge = WBS->WBorLeft + 4;
- newgdg.ng_Width = maxstrlen * 2 + 34;
- newgdg.ng_GadgetText = NULL;
- gad = CreateGadget( LISTVIEW_KIND, gad, &newgdg,
- GTLV_Labels, ModeList,
- GTLV_Top, DisplayNode->mn_Index,
- GTLV_Selected, DisplayNode->mn_Index,
- GTLV_ShowSelected, NULL,
- TAG_END );
-
- /* Set up gadgets */
- if ( gad )
- {
- wwidth = (UWORD)(gad->LeftEdge + gad->Width + 4 + WBS->WBorRight);
- if ( GadToolsBase->lib_Version < 38 )
- wheight = (UWORD)(gad->TopEdge + gad->Height + 3 + fonth + WBS->WBorBottom);
- else
- wheight = (UWORD)(gad->TopEdge + gad->Height + 2 + WBS->WBorBottom);
- if ( wleft == ~0 && wtop == ~0 )
- {
- wleft = (WBS->Width - wwidth)>>1;
- wtop = (WBS->Height - wheight)>>1;
- }
- return( TRUE );
- }
-
- FreeGadgets( glist );
- }
- FreeVisualInfo( vi );
- vi = NULL;
- }
- UnlockPubScreen( NULL, WBS );
- }
- DeleteModeList();
-
- return( FALSE );
- }
-
-
- void RemoveGadgets( void )
- {
- FreeGadgets( glist );
- FreeVisualInfo( vi );
- UnlockPubScreen( NULL, WBS );
- DeleteModeList();
- }
-